package PruebasUnitarias;

import Modelo.*;
import junit.framework.TestCase;

public class NaveEspacialTest extends TestCase {
	private Bloque[][] bloques;
	private Mapa mapa;
	
	protected void setUp() throws Exception {
		super.setUp();
		mapa= new Mapa(); 
		bloques= new Bloque[12][3];
		
		for(int i=0;i<12;i++)
			for(int j=0;j<3;j++)
				if(i!=0&&i!=11)
					bloques[i][j]= new Vacio(mapa);
				else
					bloques[i][j]= new Fuego(mapa);
		bloques[1][1]= new NaveEspacial(mapa);
		bloques[10][1]= new NaveEspacialLlegada(mapa);
		mapa.inicializarMapa(bloques);
	}
	
	public void testAlojar(){
		Personaje pooglin= new Pooglin(mapa);
		mapa.Agregar(pooglin);
		Thread elPooglin= (Thread) pooglin;
		while(elPooglin.isAlive());
		// el hilo muere, pero el pooglin vive
		assertTrue(pooglin.estaVivo());
		assertTrue(mapa.naveTransbordo().estaAlojado(pooglin));
		
		Personaje pooglin2= new Pooglin(mapa);
		bloques[7][1]= new Fuego(mapa);
		mapa.Agregar(pooglin2);
		Thread elPooglin2= (Thread) pooglin2;
		while(elPooglin2.isAlive());
		// en cambio ahora el pooglin muere, y por lo tanto el hilo
		assertFalse(pooglin2.estaVivo());
	}
}
